﻿///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ЗаполнитьТаблицуНастроек();
	
КонецПроцедуры

#КонецОбласти


#Область ОбработчикиСобытийЭлементовТаблицыФормы

&НаКлиенте
Процедура ТаблицаНастроекПриАктивизацииСтроки(Элемент)
	
	ТекущиеДанные = Элементы.ТаблицаНастроек.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Элементы.ТаблицаНастроекУдалитьНастройку.Видимость = ТекущиеДанные.Пользователь = ПользователиКлиент.ТекущийПользователь();
	
КонецПроцедуры

&НаКлиенте
Процедура ТаблицаНастроекВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	ВыполнитьВыбор();
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура УдалитьНастройку(Команда)

	ТекущиеДанные = Элементы.ТаблицаНастроек.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;

	УдалитьНастройкуНаСервере(Новый Структура("Наименование, Пользователь", ТекущиеДанные.Наименование, ТекущиеДанные.Пользователь));
	
КонецПроцедуры

&НаКлиенте
Процедура Выбрать(Команда)
	ВыполнитьВыбор();
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ВыполнитьВыбор()
	
	ТекущиеДанные = Элементы.ТаблицаНастроек.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Закрыть(Новый Структура("Наименование, Пользователь", ТекущиеДанные.Наименование, ТекущиеДанные.Пользователь));
	
КонецПроцедуры

&НаСервере
Процедура УдалитьНастройкуНаСервере(Знач НастройкаПолномочий)
	
	Пользователь = Пользователи.ТекущийПользователь();
	
	НаборЗаписей = РегистрыСведений.НастройкиПолномочийМЧД.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Наименование.Установить(НастройкаПолномочий.Наименование);
	НаборЗаписей.Отбор.Пользователь.Установить(НастройкаПолномочий.Пользователь);
	НаборЗаписей.Записать();
	
	ЗаполнитьТаблицуНастроек()
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьТаблицуНастроек()
	
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НастройкиПолномочийМЧД.Наименование КАК Наименование,
	|	НастройкиПолномочийМЧД.Пользователь КАК Пользователь,
	|	ВЫБОР
	|		КОГДА НастройкиПолномочийМЧД.Пользователь = &Пользователь
	|			ТОГДА 1
	|		ИНАЧЕ 0
	|	КОНЕЦ КАК Приоритет
	|ИЗ
	|	РегистрСведений.НастройкиПолномочийМЧД КАК НастройкиПолномочийМЧД
	|
	|УПОРЯДОЧИТЬ ПО
	|	Приоритет УБЫВ";
	
	СписокЗначений = Новый СписокЗначений;
	Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
	НастройкиПолномочий = Запрос.Выполнить().Выгрузить();
	ТаблицаНастроек.Загрузить(НастройкиПолномочий);
	
КонецПроцедуры

#КонецОбласти


